import { API, ERR_CODE } from 'api/config'
import axios from 'axios'

export const ArtistListApi = `${API}/artist/list` //  歌手分类列表
export const ArtistsApi = `${API}/artists` //  获取歌手单曲
export const ArtistDetailApi = `${API}/artist/detail` //  获取歌手详情
export const ArtistSongApi = `${API}/artist/top/song` //  歌手热门50首歌曲
export const ArtistSubApi = `${API}/artist/sub` //  收藏/取消收藏歌手

/**
 * 歌手分类列表
 * @param type {number} -1:全部 1:男歌手 2:女歌手 3:乐队
 * @param area {number} -1:全部 7华语 96欧美 8:日本 16韩国 0:其他
 * @param limit {number} 分页数量
 */
export function GetArtistListAsync ({type = -1, area, limit = 36}) {
  return axios.get(ArtistListApi, {
    params: { type, area: formatArea[area], limit }
  }).then(res => {
    if (res.code === ERR_CODE) {
      return Promise.resolve(res.artists)
    } else {
      return Promise.reject(res.msg)
    }
  }).catch(err => {
    return Promise.reject(err)
  })
}
const formatArea = {
  1: 7,
  2: 96,
  3: 8,
  4: 16,
  5: 0
}

/**
 * 获取歌手单曲  可获得歌手部分信息和热门歌曲
 * @param id {number} 歌手ID
 */
export function GetArtistsAsync (id) {
  return axios.get(ArtistsApi, {
    params: { id }
  }).then(res => {
    if (res.code === ERR_CODE) {
      return Promise.resolve(res)
    } else {
      return Promise.reject(res.msg)
    }
  }).catch(err => {
    return Promise.reject(err)
  })
}

/**
 * 获取歌手详情 调用此接口 , 传入歌手 id, 可获得获取歌手详情
 * @param id {number} 歌手ID
 */
export function GetArtistDetailAsync (id) {
  return axios.get(ArtistDetailApi, {
    params: { id }
  }).then(res => {
    if (res.code === ERR_CODE) {
      return Promise.resolve(res.data)
    } else {
      return Promise.reject(res.msg)
    }
  }).catch(err => {
    return Promise.reject(err)
  })
}

/**
 * 歌手热门50首歌曲 调用此接口,可获取歌手热门50首歌曲
 * @param id {number} 歌手ID
 */
export function GetArtistSongAsync (id) {
  return axios.get(ArtistSongApi, {
    params: { id }
  }).then(res => {
    if (res.code === ERR_CODE) {
      return Promise.resolve(res.songs)
    } else {
      return Promise.reject(res.msg)
    }
  }).catch(err => {
    return Promise.reject(err)
  })
}

/**
 * 收藏/取消收藏歌手     调用此接口,可收藏歌手
 * @param id {number} 歌手ID
 * @param t {number}  操作 1 为收藏  其他为取消收藏
 */
export function ArtistSubAsync (id, t) {
  return axios.get(ArtistSubApi, {
    params: { id, t }
  }).then(res => {
    if (res.code === ERR_CODE && res.message === 'success') {
      return Promise.resolve(true)
    } else {
      return Promise.reject(res.msg)
    }
  }).catch(err => {
    return Promise.reject(err)
  })
}
